<?php

class Csocios extends Controlador{
	function Csocios($module,&$modelo,&$vista){
		parent::Controlador($module,$modelo,$vista);
		global $host,$username,$password,$database;
		//cargo el modelo
		$this->modelo->desconecta();
		$this->modelo=new Modelo($host,	$username, $password, $database);
		$this->carga_accion();
		$vista->pasa_vista("session",$_SESSION);
		$vista->display("index.tpl.html");
	}

	/*
	 * Funcion a traves de la cual los usuarios no registrados que quieren ser socios,
	 * rellenan un formulario con sus datos personales (nombre y telefono), y los nombres
	 * de 2 personas que deben avalarles.
	 */
	function action_peticionAlta(){
		// vble. con la que controlamos si debemos presentar el formulario, o tenemos
		// que procesar lo que el usuario ha enviado
		$presentaForm = TRUE;
		//hacemos la consulta a la BBDD y mandamos procesarla
		$sql="select nombre from socios where tipoSocio='socio'";
		$respuesta=$this->consulta($sql);
		
		// si existe la vble. $_POST es que el usuario ya ha estado en el formulario
		if (isset($_POST['data'])) {
			//debemos procesar el formulario; pasamos los datos a otra vble. para manejarlos mejor
			$data = $_POST['data'];
			$valida=false;
			if (isset($data['nombre']) && $data['nombre']!=null && $data['nombre']!="" &&
			isset($data['telefono']) && $data['telefono']!=null && $data['telefono']!=""){
				$valida=true;
			}
			
			//que valide significa que los datos introducidos por el usuario en el formulario
			//estan rellenados, y que son correctos
			if ($valida==true) {
				if (isset($data['socio1']) && $data['socio1']!=null && $data['socio1']!="" &&
				isset($data['socio2']) && $data['socio2']!=null && $data['socio2']!="" &&
				$data['socio1'] != $data['socio2']) {
					$presentaForm = FALSE;
					//insert into noticias values (NULL,'$descripcion,fecha_actual)
					//ademas aÃƒÆ’Ã‚Â±adimos un texto explicativo que guardaremos en la BBDD
					$descripcion = "La persona " . $data['nombre'] . " quiere formar parte de la sociedad.";
					$descripcion .= "<br/>";
					$descripcion .= " Sus avaladores son " . $data['socio1'] . " y ". $data['socio2'].".";
					$descripcion .= "<br/>";
					$descripcion .= " Tfno. de contacto: " . $data['telefono'];
					//ponemos la fecha actual
					$fecha = date ( "Y-n-j" );
					$sql = "insert into noticias values(NULL, '".$descripcion."', '". $fecha ."')";
					$this->consulta($sql);
				} else {
					//si entramos aqui es porque ha seleccionado en los desplegables al mismo
					//socio avalador. Pasamos a la vista un mensaje para que informe al usuario
					$mensaje = "Las personas que avalan deben ser diferentes";
					$this->pasa_vista("mensaje", $mensaje);
					$this->pasa_vista("data", $data);
				}
			}else {
				//si entramos aqui es porque ha el campo nombre o el campo telefono son incorrectos
				//o no estan rellenos. Pasamos a la vista un mensaje para que informe al usuario
				$mensaje = "Los campos de nombre y telefono deben estar rellenados";
				$this->pasa_vista("mensaje", $mensaje);
				$this->pasa_vista("data", $data);		
			}
		}
		//le pasamos a la vista el listado de socios para que rellene los desplegables,
		//y le decimos si presentamos el formulario o un mensaje de que que estamos procesando
		//el alta nueva.
		$this->pasa_vista("socios", $respuesta);
		$this->pasa_vista("presentaformulario", $presentaForm);
	}

	/*
	 * Se trata de una funcion que comprueba si el usuario esta registrado o no en la BBDD,
	 * y si lo esta a que operaciones tiene acceso(socio, administrador,...)
	 */
	function action_login(){
		if (isset($_POST['data'])) {
			//procesamos el formulario ya que el usuario ha pasado por alli;
			$valida=false;
			$datos=$_POST['data'];
			if (isset($datos['username']) && $datos['username']!=null && $datos['username']!="" &&
				isset($datos['password']) && $datos['password']!=null && $datos['password']!=""){
				$valida=true;
			}
			
			//el usuario ha rellenado los campos de login y password, ahora debemos comprobar
			//si existe en nuestra BBDD, y que tipo de usuario registrado es.
			if ($valida==true) {
				//comprobacion de la contraseÃƒÆ’Ã‚Â±a y el user				
				$sql=" select * from socios where ";
				$sql.= " usuario='".$datos['username']."' and";
				$sql.= " password='".$datos['password']."'";
				$respuesta=$this->consulta($sql);
				
				if (is_array($respuesta) && count($respuesta)==1){
					//si llegamos aqui, el usuario y la contraseÃƒÆ’Ã‚Â±a son correctas
					//deberemos presentar el menu correspondiente al tipo de socio
					//pasamos a la sesion los datos del usuario que se acaba de validar
					$_SESSION['user']=array();
					$_SESSION['user']['nombre']=$respuesta[0]['nombre'];
					$_SESSION['user']['id']=$respuesta[0]['id'];
					$_SESSION['user']['email']=$respuesta[0]['email'];
					$_SESSION['user']['tipoSocio']=$respuesta[0]['tipoSocio'];
					
					$tipoSocio = $respuesta[0]['tipoSocio'];
					switch ($tipoSocio) {
						case 'socio':
							$this->redir("menuSocio");
							break;
						case 'admin':
							$this->redir("menuAdmin");
							break;
					}
					// avisamos a la vista de que no debe presentar el formulario de entrada	
					$this->pasa_vista("presentaLogin", false);
				}
				else{
					//pasamos un mensaje de error que nos presentara la vista, y le decimos
					//que saque de nuevo el formulario
					$mensaje="Usuario o contraseÃ±a invalidos.";
					$this->pasa_vista("presentaLogin", true);
					$this->pasa_vista("mensaje", $mensaje);
				}
			}else {
				$mensaje="Usuario o contraseÃ±a invalidos.";
				$this->pasa_vista("mensaje", $mensaje);
			}
		}
	}
	
	function action_menuSocio(){
		
	}
	function action_menuAdmin(){
		
	}
	
	/*
	 * Funcion que borra la sesion, y que nos presenta el formulario de entrada al sistema
	 */
	function action_logout(){
		unset($_SESSION['user']);
		unset($_SESSION['producto']);
		$this->pasa_vista("presentalogin", true);	
	} 
	
	/*
	 * A traves de esta funcion conseguimos todos los socios registrados del sistema para
	 * posteriormente poder realizar operaciones sobre los mismos
	 */
	function action_gestionSocios(){
		$sql="select * from socios";
		$respuesta=$this->consulta($sql);
		$this->pasa_vista("datos", $respuesta);
	}
	
	/*
	 * A traves de esta funcion conseguimos todos los productos del sistema y el grupo al
	 * que pertenecen para posteriormente poder realizar operaciones sobre los mismos
	 */
	function action_gestionStock(){
		$sql="select distinct grupo from stock";
		$respuesta=$this->consulta($sql);
		$this->pasa_vista("grupo", $respuesta);
		
		if (isset($_POST['data'])){
			$datos = $_POST['data'];
			$sql="select * from stock where grupo='".$datos['stock']."'";
			$respuesta=$this->consulta($sql);
			$this->pasa_vista("prodGrupo", $respuesta);
			$this->pasa_vista("grupoSeleccionado",$datos['stock']);
		}
		else {
			$sql="select * from stock where grupo='".$respuesta[0]['grupo']."'";
			$respuesta=$this->consulta($sql);
			$this->pasa_vista("prodGrupo", $respuesta);
		}
	}
	
	/*
	 * A traves de esta funcion conseguimos todos los datos de las mesas de la sociedad
	 * para posteriormente poder realizar operaciones sobre las mismas
	 */
	function action_gestionMesas(){
		$sql="select * from mesas";
		$respuesta=$this->consulta($sql);
		$this->pasa_vista("datos", $respuesta);
	}
	
	/*
	 * A traves de esta funcion conseguimos todas las noticias del sistema para
	 * posteriormente poder realizar operaciones sobre las mismas. Aprovechamos para
	 * ordenarlas por fecha
	 */
	function action_gestionNoticias(){
		$sql="select * from noticias order by fechaPublicacion";
		$respuesta=$this->consulta($sql);
		$this->pasa_vista("datos", $respuesta);
	}
	
	/*
	 * Funcion a traves de la cual damos de alta una nueva noticia en el tablon. Comprobamos que se ha
	 * metido una descripcion y la metemos en nuestra BBDD con la fecha de hoy
	 */
	function action_addNoticias(){
		if (isset($_POST['data'])) {
			//proceso del formulario
			$valida=false;
			$datos=$_POST['data'];
			if (isset($datos['descripcion']) && $datos['descripcion']!=null && $datos['descripcion']!=""){
				$valida=true;
			}
			
			if ($valida==true) {
				$fecha = date ( "Y-n-j" );
				// insert into cliente values (NULL,'$datos['nombre']','$datos['cif']')
				$sql = "insert into noticias values (NULL, '".$datos['descripcion'] ."', '" . $fecha . "')";
				$respuesta=$this->insert($sql);
				
				if ($respuesta>0) {
					//hemos aÃƒÆ’Ã‚Â±adido la noticia en la BBDD, colocandola en la ultima posicion para
					//que sea mas visual a la hora de verlas los socios. Ponemos un mensaje para que
					//sepa que todo ha ido bien, y volvemos a presentar la pagina de gestion de noticias
					$mensaje= "Noticia guardada en la BBDD";
					$this->pasa_vista("mensaje", $mensaje);
					$this->redir("gestionNoticias");
				}else{
					//ha fallado el salvado
					$mensaje= "Ha ocurrido un fallo al guardar la noticia en la BBDD";
					$this->pasa_vista("mensaje", $mensaje);
				}
			}
			else {
				$mensaje="Debe introducir alguna noticia mas interensante";
				$this->pasa_vista("mensaje", $mensaje);
			}	
		}
	}		
	
	/*
	 * Funcion a traves de la cual modificamos una noticia en el tablon. Comprobamos que se ha
	 * metido una descripcion y la metemos en nuestra BBDD con la fecha tambien actualizada
	 */
	function action_modificarNoticias(){
		
		if (isset($_GET['idNoticia'])) {
			//es la primera vez que pasamos por aqui, no le hemos dado al boton enviar, por lo
			//que debemos capturar el mensaje y rellenarlo para que se modifique
			$sql="select * from noticias where id=".$_GET['idNoticia'];
			$datos=$this->consulta($sql);
			$this->pasa_vista("datos", $datos[0]);
			$valida=false;
		}
		else{
			$datos = $_POST['data'];
			$fecha = date ( "Y-n-j" );
			// update cliente set nombre='nombredado', cif='cifdado' where id=6
			$sql="update noticias set ";
			$sql.="descripcion='".$datos['descripcion']."',fechaPublicacion='".$fecha."'";
			$sql.=" where id=".$datos['id'];
			//ejecuto la sql
			$respuesta=$this->update($sql);
			if ($respuesta==1) {
				//la ha aÃƒÆ’Ã‚Â±adido
				$mensaje= "Noticia actualizada en la BBDD";		
			}else{
				//ha fallado el salvado
				$mensaje= "Ha ocurrido un fallo al guardar la noticia en la BBDD";
			}
			$this->pasa_vista("mensaje", $mensaje);
			$this->redir("gestionNoticias");
		}				
	}

	/*
	 * Funcion a traves de la cual damos de baja una noticia en el tablon. 
	*/
	function action_eliminarNoticias(){
		if (isset ($_GET['confirm']) && $_GET['confirm'] == 1) {
			//significa que el admin quiere borrar realmente esa noticia
			$sql="delete from noticias where id=".$_GET['id'];
			$respuesta=$this->delete($sql);
			if($respuesta==TRUE){
				$mensaje= "Noticia borrada en la BBDD";
			}else{
				$mensaje= "Ha ocurrido un fallo al guardar la noticia en la BBDD";
			}
			$this->pasa_vista("mensaje", $mensaje);
			$this->redir("gestionNoticias");
		}
		else {
			$sql="select * from noticias where id=".$_GET['idNoticia'];
			$datos=$this->consulta($sql);
			$this->pasa_vista("datos", $datos[0]);
		}	
	}
	
	function action_ticketComida(){
		//calculamos los distintos grupos de productos que tenemos en la BBDD
		$grupos = $this->calcularGrupos();
		
		if (isset($_GET['grupo'])) {
			//estamos en el caso de que el socio ha pinchado sobre uno de los grupos y tenemos que 
			//presentarle los articulos de ese grupo
			$grupo = $_GET['grupo'];
			$this->calcularArticulosGrupo($grupo);
			$this->pasa_vista("grupoSeleccionado",$grupo);
		}else {
			$this->calcularArticulosGrupo($grupos[0]['grupo']);
		}
		
		if (isset($_GET['producto']) && !isset($_GET['op'])) {
			//el socio ha pinchado directamente sobre uno de los articulos para incluirlo como una
			//consumicion en el ticket
			$producto = $_GET['producto'];
			$grupo=$this->calcularGrupoDeArticulo($producto);

			$this->calcularArticulosGrupo($grupo);
			
			$precio = $this->calcularPrecioArticulo($producto);
			
			//ahora vemos si ese articulo ya lo teniamos en nuestro carrito, con lo que tendremos que
			//actualizar su contenido, y en caso contrario tendremos que aÃƒÂ¯Ã‚Â¿Ã‚Â½adir los distintos campos
			if (isset($_SESSION['producto'][$producto])){
				$_SESSION['producto'][$producto]['cantidad']++;
				$cantidad = $_SESSION['producto'][$producto]['cantidad'];
				$_SESSION['producto'][$producto]['importe'] = $cantidad*$precio;
			}else {
				$_SESSION['producto'][$producto]['precio'] = $precio;;
				$_SESSION['producto'][$producto]['cantidad'] = 1;
				$_SESSION['producto'][$producto]['importe'] = $precio;
			}
		}else{
			if (isset($_GET['op'])) {
				$operacion = $_GET['op'];
				$producto = $_GET['producto'];
				$grupo = $this->calcularGrupoDeArticulo($producto);
				
				$this->calcularArticulosGrupo($grupo);
				
				$precio = $this->calcularPrecioArticulo($producto);
				
				switch ($operacion) {
					case 'suma':
						$_SESSION['producto'][$producto]['precio'] = $precio;
						$_SESSION['producto'][$producto]['cantidad']++;
						$cantidad = $_SESSION['producto'][$producto]['cantidad'];
						$_SESSION['producto'][$producto]['importe'] = $cantidad*$precio;
						break;
					case 'resta':
						$_SESSION['producto'][$producto]['precio'] = $precio;
						$_SESSION['producto'][$producto]['cantidad']--;
						$cantidad = $_SESSION['producto'][$producto]['cantidad'];
						$_SESSION['producto'][$producto]['importe'] = $cantidad*$precio;
					break;
				}
			}	
		}
		//calculamos la cuenta parcial de lo que hasta ahora hemos consumido
		$total = 0;
		$existe=false;
		foreach ($_SESSION as $clavesSesion => $camposSesion) {
			if ($clavesSesion == 'producto') {
				foreach ($camposSesion as $nombreProducto => $camposProducto) {
					$total += $camposProducto['importe'];
					$existe=true;
				}
			}
		}
		//capturamos el valor del numero de comensales y se lo pasamos a vista y lo aÃƒÆ’Ã‚Â±adimos 
		//al importe de la cuenta (1ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬/comensal)
		if (isset($_POST['data'])) {
			$datos = $_POST['data'];
			$this->pasa_vista("comensales",$datos['comensales']);
			if ($total == 0){
				$_SESSION['producto']['total'] = 0;
			}
			else{
				$_SESSION['producto']['total'] = $total + $datos['comensales'];	
			}
		}
		else{
			if ($existe){
				$_SESSION['producto']['total'] = $total;
			}
			else{
				$_SESSION['producto']['total'] = 0;
			}
		}
	}
	
	function calcularGrupos(){
		$sql="select distinct grupo from stock";
		$respuesta=$this->consulta($sql);
		$this->pasa_vista("grupo", $respuesta);
		return $respuesta;
	}
	function calcularArticulosGrupo($grupo){
		$sql="select nombre from stock where grupo='".$grupo."'";
		$respuesta=$this->consulta($sql);
		$this->pasa_vista("prodGrupo", $respuesta);
	}
	function calcularGrupoDeArticulo($producto){
		$sql="select grupo from stock where nombre='".$producto."'";
		$respuesta=$this->consulta($sql);
		$this->pasa_vista("prodGrupo", $respuesta[0]['grupo']);
		return $respuesta[0]['grupo'];
	}
	/*
	 * Funcion que devuelve el precio de un articulo que le pasamos como parametro 
	 */
	function calcularPrecioArticulo($producto){
		$sql="select precio from stock where nombre='".$producto."'";
		$respuesta=$this->consulta($sql);
		return $respuesta[0]['precio'];
	}
	
	function calcularUnidadesProd($nombreCampo){
		$sql="select unidades from stock where nombre='".$nombreCampo."'";
		$respuesta=$this->consulta($sql);
		return $respuesta[0]['unidades'];
	}
	
	function calcularMailBodeguero(){
		$sql="select email from socios where tipoSocio='bodeguero'";		
		$respuesta=$this->consulta($sql);
		return $respuesta[0]['email'];
	}
	
	function action_cerrarTicket(){	
		if (isset($_GET['confirm'])){
			$fecha = date ( "Y-n-j" );
			// tenemos que guardar los datos en nuestra tabla de tickets de la BBDD
			$sql = "insert into tickets ";
			$sql .= "values (NULL,".$_SESSION['user']['id'].",".$_SESSION['producto']['sumaTotal'].",'".$fecha."')";
			
			$respuesta=$this->insert($sql);
			
			if ($respuesta>0) {
				// se selecciona el ultimo id de la tabla tickets			
				$sql=" select ifnull(max(id),0) as maxid from tickets";
				$respuesta=$this->consulta($sql);
				
				if (is_array($respuesta) && count($respuesta)==1){
					$idTicket=$respuesta[0]['maxid'];
				}
				else {
					$idTicket=0;
				}
				//hemos aÃƒÆ’Ã‚Â±adido el ticket en la BBDD. Ponemos un mensaje para que
				//sepa que todo ha ido bien
				$mensaje= "Ticket guardado en la BBDD";
				$this->pasa_vista("mensaje", $mensaje);
				$this->pasa_vista("ticketGuardado", true);
				//actualizar el numero de unidades de los productos consumidos en la BBDD
				foreach ($_SESSION['producto'] as $nombreCampo => $campo) {
					if ($this->esProducto($nombreCampo)){
						if (is_array($campo)){
							foreach ($campo as $nombreCampo2 => $campo2) {
								if ($nombreCampo2 == 'cantidad'){
									$cantidad = $campo2;
									//debemos coger ese articulo y quitarle el numero de unidades
									//que hayamos consumido
									$unidadesAnteriores = $this->calcularUnidadesProd($nombreCampo);
									$unidadesActuales = $unidadesAnteriores - $campo2;
									$sql="update stock set ";
									$sql.="unidades=".$unidadesActuales;
									$sql.=" where nombre='".$nombreCampo."'";
									//ejecuto la sql
									$respuesta=$this->update($sql);
									if ($respuesta==1) {
										//lo he aÃƒÂ±adido
										$mensaje= "Producto actualizado en la BBDD";		
									}else{
										//ha fallado el salvado
										$mensaje= "Ha ocurrido un fallo al actualizar el producto en la BBDD";
									}
								}
								if ($nombreCampo2 == 'precio'){
									$precio = $campo2;
								}
								if ($nombreCampo2 == 'importe'){
									$importe = $campo2;
								}
							}
							//tambien debemos actualiar la tabla detalleTicket
							//insert into detallestickets values (id,idTicket,nombreProd,
							//									  unidades,precio,importe)
							$sql = "insert into detalletickets ";
							$sql .= "values (NULL,".$idTicket.",'".$nombreCampo."',";
							$sql .= $cantidad.",".$precio.",".$importe.")";
	
							$respuesta=$this->insert($sql);
						}
					}
				}
				//debemos hacer mantenimiento de las cuentas de la sociedad
				//insert into librocuentas values (id,nombreSocio,descripcion,
				//									  importe,tipo,fecha)
				$descripcion = "Comida en la sociedad con codigo de ticket: ".$idTicket;
				$sql = "insert into librocuentas ";
				$sql .= "values (NULL,'".$descripcion."',";
				$sql .= $_SESSION['producto']['sumaTotal'].",'ingreso','".$fecha."')";
				
				$respuesta=$this->insert($sql);
							
				//tenemos que informar al bodeguero en caso de que el socio informe de que alguno
				//de los articulos 'incontables' se este o este a punto de agotarse
				if (isset($_POST['data']['observaciones']) && $_POST['data']['observaciones'] != null
					&& $_POST['data']['observaciones'] != ""){
					$datos = $_POST['data'];
					$destinatario = $this->calcularMailBodeguero();
					$asunto = "Reponer articulos en almacen";
					$mensaje = $datos['observaciones'];
					$this->pasa_vista("destinatario",$destinatario);
					$this->pasa_vista("asunto",$asunto);
					$this->pasa_vista("mensajeMail",$mensaje);
					mail("igorjulian.gonzalez@ehu.es", $asunto, $mensaje);
				}
				
				unset($_SESSION['producto']);
			}else{
				//ha fallado el salvado
				$mensaje= "Ha ocurrido un fallo al guardar el ticket en la BBDD";
				$this->pasa_vista("mensaje", $mensaje);
				$this->pasa_vista("ticketGuardado", true);
			}
		}
		else{
			if ($this->datosTicket() == true){
			$comensales = $_POST['data']['comensales'];
			$fecha = date ( "j-n-Y" );
			$this->pasa_vista("fecha",$fecha);
			$total = $_SESSION['producto']['total'];
			$sumaTotal = $total + $comensales;
			$this->pasa_vista("total",$total);
			$this->pasa_vista("sumaTotal",$sumaTotal);
			$_SESSION['producto']['sumaTotal'] = $sumaTotal;
			}
			else{
				$this->redir("ticketComida");
			}
		}
	}
	
	function datosTicket(){
		if (!isset($_POST['data']['comensales']) || $_POST['data']['comensales'] <= 0) {
			$mensaje = "Debe introducir el numero de comensales";
			$this->pasa_vista("errorComensales",$mensaje);
			return false;
		}
		if (!isset($_SESSION['producto']['total']) || $_SESSION['producto']['total'] <= 0) {
			$mensaje = "Debe seleccionar al menos un articulo";
			$this->pasa_vista("errorImporte",$mensaje);
			return false;
		}
		return true;
	}
	
	/*
	 * Funcion que mira en la BBDD si lo que contiene el campo del array de la sesion
	 * es un articulo de nuestra tabla stock(puede ser que sea otro campo como total,...)
	 */
	function esProducto($prod){
		$sql="select * from stock where nombre='".$prod."'";
		$respuesta=$this->consulta($sql);
		if ($respuesta > 0){
			//significa que hay un registro que tiene ese nombre en la tabla stock
			return true;
		}
		else{
			return false;
		}
	}
	
	// aÃƒÂ¯Ã‚Â¿Ã‚Â½adido por carlos jimenez
	/*
	 * Funcion a traves de la cual damos de alta un nuevo socio. Comprobamos que se han
	 * metido los datos y la metemos en nuestra BBDD.
	 */
	function action_addSocios(){
		if (isset($_POST['data'])) {
			//proceso del formulario
			$valida=false;
			$datos=$_POST['data'];
			/*
			if (isset($datos['descripcion']) && $datos['descripcion']!=null && $datos['descripcion']!=""){
				$valida=true;
			}	*/
			$valida=true;
			
			if ($valida==true) {
				$fecha = date ( "Y-n-j" );
				// insert into cliente values (NULL,'$datos['nombre']','$datos['cif']')
				$sql = "insert into socios ";
				$sql .= "values (NULL, '".$datos['nombre'] ."','".$datos['usuario'] ."',";
				$sql .= "'".$datos['password'] ."','".$datos['email'] ."',";
				$sql .= "'".$datos['direccion'] ."','".$datos['telefono'] ."',";
				$sql .= "'".$datos['numeroCuenta'] ."',";
				$sql .= "'".$datos['tipoSocio'] ."')";
				
				$respuesta=$this->insert($sql);
				
				if ($respuesta>0) {
					//hemos aÃƒÆ’Ã‚Â±adido el socio en la BBDD. Ponemos un mensaje para que
					//sepa que todo ha ido bien, y volvemos a presentar la pagina de gestion de noticias
					$mensaje= "Socio guardada en la BBDD";
					$this->pasa_vista("mensaje", $mensaje);
					$this->redir("gestionSocios");
				}else{
					//ha fallado el salvado
					$mensaje= "Ha ocurrido un fallo al guardar el cosio en la BBDD";
					$this->pasa_vista("mensaje", $mensaje);
				}
			}
			else {
				$mensaje="Debe introducir correctamente el socio.";
				$this->pasa_vista("mensaje", $mensaje);
			}	
		}
		else{
			$datos=array();
			$datos['nombre']="";
			$this->pasa_vista("datos", $datos);
		}
	}

	/*
	 * Funcion a traves de la cual modificamos un socio. Comprobamos que se han
	 * metido los datos y la metemos en nuestra BBDD.
	 */
	function action_modificarSocios(){
		
		if (isset($_GET['idSocio'])) {
			if (!(isset($_SESSION['user']['tipoSocio']) && ($_SESSION['user']['tipoSocio']=='socio' ||
				$_SESSION['user']['tipoSocio']=='bodeguero') && 
				$_SESSION['user']['id']!=$_GET['idSocio'])) 
				{
				//es la primera vez que pasamos por aqui, no le hemos dado al boton enviar, por lo
				//que debemos capturar el mensaje y rellenarlo para que se modifique
				$sql="select * from socios where id=".$_GET['idSocio'];
				$datos=$this->consulta($sql);
				$this->pasa_vista("datos", $datos[0]);
				$valida=false;
				}
			else{
				$this->redir("ticketComida");
			}
		}
		else{
			$datos = $_POST['data'];
			//$fecha = date ( "Y-n-j" );
			
			$sql="update socios set ";
			$sql.="nombre='".$datos['nombre']."',";
			$sql.="usuario='".$datos['usuario']."',";
			$sql.="password='".$datos['password']."',";
			$sql.="email='".$datos['email']."',";
			$sql.="direccion='".$datos['direccion']."',";
			$sql.="telefono='".$datos['telefono']."',";
			$sql.="numeroCuenta='".$datos['numeroCuenta']."'";
			
			
			$sql.=" where id=".$datos['id'];
			//ejecuto la sql
			$respuesta=$this->update($sql);
			if ($respuesta==1) {
				//la ha aÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â±adido
				$mensaje= "Socio actualizado en la BBDD";		
			}else{
				//ha fallado el salvado
				$mensaje= "Ha ocurrido un fallo al guardar el socio en la BBDD";
			}
			$this->pasa_vista("mensaje", $mensaje);
			$this->redir("gestionSocios");
		}				
	}


	/*
	 * Funcion a traves de la cual damos de baja un socio. 
	*/
	function action_eliminarSocios(){
		if (isset ($_GET['confirm']) && $_GET['confirm'] == 1) {
			//significa que el admin quiere borrar realmente ese socio
			$sql="delete from socios where id=".$_GET['id'];
			$respuesta=$this->delete($sql);
			if($respuesta==TRUE){
				$mensaje= "Socio borrado en la BBDD";
			}else{
				$mensaje= "Ha ocurrido un fallo al guardar el socio en la BBDD";
			}
			$this->pasa_vista("mensaje", $mensaje);
			$this->redir("gestionSocios");
		}
		else {
			$sql="select * from socios where id=".$_GET['idSocio'];
			$datos=$this->consulta($sql);
			$this->pasa_vista("datos", $datos[0]);
		}	
	}
	
	/*
	 * Funcion a traves de la cual damos de alta un stock. Comprobamos que se han
	 * metido los datos y la metemos en nuestra BBDD.
	 */
	function action_addStock(){
		if (isset($_POST['data'])) {
			//proceso del formulario
			$valida=false;
			$datos=$_POST['data'];
			/*
			if (isset($datos['descripcion']) && $datos['descripcion']!=null && $datos['descripcion']!=""){
				$valida=true;
			}	*/
			$valida=true;
			
			if ($valida==true) {
				//$fecha = date ( "Y-n-j" );
				// insert into cliente values (NULL,'$datos['nombre']','$datos['cif']')
				$sql = "insert into stock ";
				$sql .= "values (NULL, '".$datos['nombre'] ."','".$datos['grupo'] ."',";
				$sql .= $datos['precio'] .",".$datos['unidades'] .")";
				
				$respuesta=$this->insert($sql);
				
				if ($respuesta>0) {
					//hemos aÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â±adido el stock en la BBDD. Ponemos un mensaje para que
					//sepa que todo ha ido bien, y volvemos a presentar la pagina de gestion de stock
					$mensaje= "Stock guardado en la BBDD";
					
					//tambien tenemos que actualizar el libro de cuentas con un gasto nuevo
					$fecha = date ( "Y-n-j" );
					$importeGasto = $datos['unidades']*$datos['precio'];
					$descripcion = "Se ha metido el articulo ".$datos['nombre']." en la BBDD.";
					$descripcion .= " El gasto ha sido ".$importeGasto." Ã¢â€šÂ¬";
					
					$sql = "insert into librocuentas values(NULL,'".$descripcion;
					$sql .= "',". $importeGasto .",'gasto','" . $fecha . "')";
					$respuesta = $this->insert($sql);
					
					$this->pasa_vista("mensaje", $mensaje);
					unset($_POST['data']);
					$this->redir("gestionStock");
				}else{
					//ha fallado el salvado
					$mensaje= "Ha ocurrido un fallo al guardar el stock en la BBDD";
					$this->pasa_vista("mensaje", $mensaje);
				}
			}
			else {
				$mensaje="Debe introducir correctamente el stock.";
				$this->pasa_vista("mensaje", $mensaje);
			}	
		}
		else{
			$sql="select distinct grupo from stock";
			$respuesta=$this->consulta($sql);
			$this->pasa_vista("grupo", $respuesta);
			
			$datos=array();
			$datos['nombre']="";
			$this->pasa_vista("datos", $datos);
		}
	}


	/*
	 * Funcion a traves de la cual modificamos un stock. Comprobamos que se han
	 * metido los datos y la metemos en nuestra BBDD.
	 */
	function action_modificarStock(){
		
		if (isset($_GET['idStock'])) {
			//es la primera vez que pasamos por aqui, no le hemos dado al boton enviar, por lo
			//que debemos capturar el mensaje y rellenarlo para que se modifique
			$sql="select * from stock where id=".$_GET['idStock'];
			$datos=$this->consulta($sql);
			$this->pasa_vista("datos", $datos[0]);
			$sql="select distinct grupo from stock";
			$respuesta=$this->consulta($sql);
			$this->pasa_vista("grupo", $respuesta);
			$valida=false;
		}
		else{
			$datos = $_POST['data'];
			//ejecuto una sql para ver cuantas unidades habia antes de actualizarse la BBDD
			$sql = "select unidades from stock where id=".$datos['id'];
			$respuesta=$this->consulta($sql);
			$unidadesAnteriores = $respuesta[0]['unidades'];
			
			$sql="update stock set ";
			$sql.="nombre='".$datos['nombre']."',";
			$sql.="grupo='".$datos['grupo']."',";
			$sql.="precio=".$datos['precio'].",";
			$sql.="unidades=".$datos['unidades'];			
			$sql.=" where id=".$datos['id'];
			
			//ejecuto la sql
			$respuesta=$this->update($sql);
			if ($respuesta==1) {
				//la ha aÃƒÂ±adido
				$mensaje= "Stock actualizado en la BBDD";
				//tambien tenemos que actualizar el libro de cuentas con un gasto nuevo
				$fecha = date ( "Y-n-j" );
				$diferenciaUnidades = $datos['unidades'] - $unidadesAnteriores;
				$importeGasto = $diferenciaUnidades * $datos['precio'];
				$descripcion = "Se ha repuesto el producto ".$datos['nombre'];
				$descripcion .= " en ". $diferenciaUnidades. " unidades. El gasto ha sido ".$importeGasto." Ã¢â€šÂ¬";
				
				$sql = "insert into librocuentas values(NULL,'".$descripcion;
				$sql .= "',". $importeGasto .",'gasto','" . $fecha . "')";
				$respuesta = $this->insert($sql);
						
			}else{
				//ha fallado el salvado
				$mensaje= "Ha ocurrido un fallo al guardar el stock en la BBDD";
			}
			$this->pasa_vista("mensaje", $mensaje);
			unset($_POST['data']);
			$this->redir("gestionStock");
		}				
	}


	/*
	 * Funcion a traves de la cual damos de baja un stock. 
	*/
	function action_eliminarStock(){
		if (isset ($_GET['confirm']) && $_GET['confirm'] == 1) {
			//significa que el admin quiere borrar realmente ese stock
			$sql="delete from stock where id=".$_GET['id'];
			$respuesta=$this->delete($sql);
			if($respuesta==TRUE){
				$mensaje= "Stock borrado en la BBDD";
			}else{
				$mensaje= "Ha ocurrido un fallo al guardar el stock en la BBDD";
			}
			$this->pasa_vista("mensaje", $mensaje);
			$this->redir("gestionStock");
		}
		else {
			$sql="select * from stock where id=".$_GET['idStock'];
			$datos=$this->consulta($sql);
			$this->pasa_vista("datos", $datos[0]);
		}	
	}
	
	/*
	 * Funcion a traves de la cual damos de alta una nueva mesa. Comprobamos que se han
	 * metido los datos y la metemos en nuestra BBDD.
	 */
	
	function action_addMesas(){
		if (isset($_POST['data'])) {
			//proceso del formulario
			$valida=false;
			$datos=$_POST['data'];
			/*
			if (isset($datos['descripcion']) && $datos['descripcion']!=null && $datos['descripcion']!=""){
				$valida=true;
			}	*/
			$valida=true;
			
			if ($valida==true) {
				//$fecha = date ( "Y-n-j" );
				// insert into cliente values (NULL,'$datos['nombre']','$datos['cif']')
				$sql = "insert into mesas ";
				$sql .= "values (NULL, '".$datos['descripcion'] ."',".$datos['capacidad'] .")";
				
				$respuesta=$this->insert($sql);
				
				if ($respuesta>0) {
					//hemos aÃƒÆ’Ã‚Â±adido la mesa en la BBDD. Ponemos un mensaje para que
					//sepa que todo ha ido bien, y volvemos a presentar la pagina de gestion de mesas
					$mensaje= "Mesa guardada en la BBDD";
					$this->pasa_vista("mensaje", $mensaje);
					$this->redir("gestionMesas");
				}else{
					//ha fallado el salvado
					$mensaje= "Ha ocurrido un fallo al guardar la mesa en la BBDD";
					$this->pasa_vista("mensaje", $mensaje);
				}
			}
			else {
				$mensaje="Debe introducir correctamente la mesa.";
				$this->pasa_vista("mensaje", $mensaje);
			}	
		}
		else{
			$datos=array();
			$datos['nombre']="";
			$this->pasa_vista("datos", $datos);
		}
	}

/*
	 * Funcion a traves de la cual modificamos una mesa. Comprobamos que se han
	 * metido los datos y la metemos en nuestra BBDD.
	 */
	function action_modificarMesas(){
		
		if (isset($_GET['idMesa'])) {
			//es la primera vez que pasamos por aqui, no le hemos dado al boton enviar, por lo
			//que debemos capturar el mensaje y rellenarlo para que se modifique
			$sql="select * from mesas where id=".$_GET['idMesa'];
			$datos=$this->consulta($sql);
			$this->pasa_vista("datos", $datos[0]);
			$valida=false;
		}
		else{
			$datos = $_POST['data'];
			//$fecha = date ( "Y-n-j" );
			
			$sql="update mesas set ";
			$sql.="descripcion='".$datos['descripcion']."',";
			$sql.="capacidad=".$datos['capacidad'];			
			$sql.=" where id=".$datos['id'];
			//ejecuto la sql
			$respuesta=$this->update($sql);
			if ($respuesta==1) {
				//la ha aÃƒÆ’Ã‚Â±adido
				$mensaje= "Mesa actualizada en la BBDD";		
			}else{
				//ha fallado el salvado
				$mensaje= "Ha ocurrido un fallo al guardar la mesa en la BBDD";
			}
			$this->pasa_vista("mensaje", $mensaje);
			$this->redir("gestionMesas");
		}				
	}

	/*
	 * Funcion a traves de la cual damos de baja un socio. 
	*/
	function action_eliminarMesas(){
		if (isset ($_GET['confirm']) && $_GET['confirm'] == 1) {
			//significa que el admin quiere borrar realmente esa mesa
			$sql="delete from mesas where id=".$_GET['id'];
			$respuesta=$this->delete($sql);
			if($respuesta==TRUE){
				$mensaje= "Mesa borrada en la BBDD";
			}else{
				$mensaje= "Ha ocurrido un fallo al guardar la mesa en la BBDD";
			}
			$this->pasa_vista("mensaje", $mensaje);
			$this->redir("gestionMesas");
		}
		else {
			$sql="select * from mesas where id=".$_GET['idMesa'];
			$datos=$this->consulta($sql);
			$this->pasa_vista("datos", $datos[0]);
		}	
	}
	
	function action_datosPersonales() {
		$this->redir("modificarSocios");
	}
	
	function action_reservaMesas(){

		if (isset($_GET['ano'])) {
			$fecha = mktime(0,0,0,$_GET['mes'],$_GET['dia'],$_GET['ano']);
			$fecha = date("Y-n-j",$fecha);	
		}
		else{
			$fecha = date ( "Y-n-j" );
		}
		
		//miramos todas las mesas que tenemos disponibles
		$sql="select * from mesas";
		$datos=$this->consulta($sql);
		$this->pasa_vista("totalMesas", $datos);
		
		//miramos las reservas que hay hechas para el dia de hoy
		$sql="select * from reservas where fecha='".$fecha."'";
		//ECHO $sql;
		$datos=$this->consulta($sql);
		if (isset($datos) && count($datos) > 0){
			$this->pasa_vista("reservaActual", $datos);
		}
		//miramos la capacidad de las mesas que hay reservadas para hoy
		//if(is_array($datos) && count($datos) > 0) {
		//	foreach ($datos as $key => $value) {
		//		$idMesa = $value['idMesa'];
		//		$sql="select * from mesas where id=".$idMesa;
		//		$datos=$this->consulta($sql);
		//	}
		//}
		
		$this->pasa_vista("fechaActual", $fecha);		 
	}
	
	function action_cenaMensual(){
		//cogemos la fecha limite para aputarse y se lo pasamos a la vista
		$fecha = date ( "j-n-Y" );
		$this->pasa_vista("fechaCena",$fecha);
		$fecha = date ( "Y-n-j" );
		
		//almacenamos el idSocio que lo teniamos en la sesion
		$idSocio = $_SESSION['user']['id'];

		//comprobamos si nos han pasado datos por POST, lo que significa que quiere apuntarse
		//a la cena
		if (isset($_POST['data'])){
			$datos = $_POST['data'];
		
			if ($datos['acomp'] == "" || $datos['acomp'] == null) $amigos = 0;
			else $amigos = $datos['acomp'];
			if ($datos['comentario'] == "" || $datos['comentario'] == null) $comentarios = "";
			else $comentarios = $datos['comentario'];
			//quiere apuntarse a la cena. Debemos comprobar que no esta apuntado, y en caso de 
			//estar apuntado, que ha variado el numero de acompaÃ±antes (para no apuntarle 2 veces)
			$sql = " select * from cenas where idSocio = ".$idSocio;
			$respuesta=$this->consulta($sql);
			
			if (is_array($respuesta) && count($respuesta)>0){
				//significa que ya estaba apuntado a la cena
				$mensaje = "Ya se encuentra apuntado a la cena";
				$this->pasa_vista("mensaje",$mensaje);
			}
			else {
				//debemos apuntarle a la cena registrandolo en la BBDD
				$sql = "insert into cenas values (NULL,".$idSocio.",".$amigos.",'";
				$sql .= $comentarios . "','".$fecha."')";
				$respuesta=$this->consulta($sql);
				$mensaje = "Socio apuntado a la cena";
			}
		}
		else{
			if (isset($_GET['quitarme'])){
				//debemos comprobar que ese socio estaba apuntado a la cena, y quitarle tanto
				//a el como a sus acompaÃ±antes si los tuviera
				$sql = " select * from cenas where idSocio = ".$idSocio;
				$respuesta=$this->consulta($sql);
				if (is_array($respuesta) && count($respuesta)>0){
					$sql="delete from cenas where idSocio=".$idSocio;
					$respuesta=$this->delete($sql);
					if($respuesta==TRUE){
						$mensaje= "Socio desapuntado de la cena mensual";
					}else{
						$mensaje= "Ha ocurrido un fallo al desapuntar al socio de la cena mensual";
					}
				}
				else{
					$mensaje= "No se encuentra apuntado en la cena mensual";
				}
			}
		}
		$sql = "select * from cenas";
		$respuesta=$this->consulta($sql);
		if (is_array($respuesta) && count($respuesta)>0){
			foreach ($respuesta as $key => $value) {
				$sql = "select nombre from socios where id=".$value['idSocio'];
				$respuesta2=$this->consulta($sql);
				$nombre = $respuesta2[0]['nombre'];
				$respuesta[$key]['nombre'] = $nombre;
			}
			$this->pasa_vista("sociosApuntados",$respuesta);
		}
		
		//tenemos que mirar en la tabla socios cuales son los nombres de los socios apuntados
		$i = 0;
		foreach ($respuesta as $key => $value) {
			foreach ($value as $key2 => $value2) {
				if ($key2 == 'idSocio'){
					$sql = "select nombre from socios where id=".$value2;
					$respuesta=$this->consulta($sql);
					$nombres[$i] = $respuesta[0]['nombre'];
					$i++; 	
				}	
			}			
		}
		
		//contamos el numero de personas apuntadas a la cena
		$sql = "select sum(amigos),count(id) from cenas";
		$respuesta=$this->consulta($sql);
		if (is_array($respuesta) && count($respuesta)>0){
			$asistentes = 0;
			foreach ($respuesta as $indice => $valor) {
				foreach ($valor as $key => $value) {
					$asistentes += $value;
				}
			}
			$this->pasa_vista("asistentes",$asistentes);
		}
		
		if (isset($mensaje)){
			$this->pasa_vista("mensaje",$mensaje);
		}
	}
	
	function action_listadoBodeguero(){
		//select de los productos que estan bajo minimos				
		$sql=" select * from stock where ";
		$sql.= " unidades between 1 and 10";
		$respuesta=$this->consulta($sql);
			
		if (is_array($respuesta) && count($respuesta)>0){
			include_once 'fpdf/fpdf_estruc.php';
			
			// CreaciÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â³n del objeto de la clase heredada
			$pdf = new PDF();
			$pdf->AliasNbPages();
			$pdf->AddPage();
			$pdf->SetDisplayMode('real','default'); 
			$pdf->SetFont('Arial','B',16);
			$pdf->Cell(80,10,utf8_decode('ARTICULOS BAJO MINIMOS'),0,1,'C');
			$pdf->SetFont('Arial','B',8);
						
			foreach ($respuesta as $clave => $campo) {
				$pdf->Cell(40,4,utf8_decode($respuesta[$clave]['nombre']).' tiene '.$respuesta[$clave]['unidades'].' unidades.',0,1,'L');
			}				
			$pdf->Output();
		}
	}
	
	function action_gestionCuentas(){
		$sql=" select * from librocuentas";
		$respuesta=$this->consulta($sql);
		if (is_array($respuesta) && count($respuesta)>0){		
			$this->pasa_vista("datos", $respuesta);
			
			//calculamos la suma de los ingresos
			$sql=" select sum(importe) as ingreso from librocuentas where tipo='ingreso'";
			$respuesta=$this->consulta($sql);
			$ingresos = $this->redondear_dos_decimal($respuesta[0]['ingreso']);
			$this->pasa_vista("ingresos", $ingresos);
			
			//calculamos la suma de los ingresos
			$sql=" select sum(importe) as gasto from librocuentas where tipo='gasto'";
			$respuesta=$this->consulta($sql);
			$gastos = $this->redondear_dos_decimal($respuesta[0]['gasto']);
			$this->pasa_vista("gastos", $gastos);
			
			//calculamos el balance
			$balance = $this->redondear_dos_decimal($ingresos - $gastos);
			$this->pasa_vista("balance", $balance);
			
			if (isset($_GET['idCuenta'])) {
				$idCuenta = $_GET['idCuenta'];
				$descripcion = $this ->descripcionTicket($idCuenta);
				$ticket = substr($descripcion,44);			

				//buscamos en la BBDD el detalle del ticket seleccionado por el administrador
				//de las cuentas
				if (isset($ticket) && $ticket != null){
					$sql=" select * from detalletickets where idTicket = ".$ticket;
					$respuesta=$this->consulta($sql);
					if (is_array($respuesta)){
						$this->pasa_vista("datosTicket", $respuesta);	
					}
					
					//calculamos el importe de lo que ha costado unicamente los productos consumidos
					$importeComida = 0;
					foreach ($respuesta as $key => $value) {
						$importeComida += $value['importe'];
					}
					
					//calculamos el importe total para el ticket que queremos ver los detalles
					$sql=" select importe from tickets where id=".$ticket;
					$respuesta=$this->consulta($sql);
					$importeTotal = $respuesta[0]['importe'];
					
					//calculamos el numero de comensales
					$comensales = $importeTotal - $importeComida;
					$this->pasa_vista("comensales",$comensales);	
				}
				else{
					//buscamos en la BBDD el detalle del socio que ha hecho el ingreso de la cuenta
					//trimestral
					$socio = substr($descripcion,22);
					if (isset($socio) && $socio != null){
						$sql=" select nombre from socios where id = ".$socio;
						$respuesta=$this->consulta($sql);
						if (is_array($respuesta)){
							$this->pasa_vista("nombreSocio", $respuesta[0]['nombre']);	
						}
					}	
				}
			}
		}
	}
	
	function descripcionTicket($idCuenta){
		$sql=" select descripcion from librocuentas where id=".$idCuenta;
		$respuesta=$this->consulta($sql);
		return $respuesta[0]['descripcion'];
	}
	
	function redondear_dos_decimal($valor) {
  		$float_redondeado=round($valor * 100) / 100;
   		return $float_redondeado;
	} 
	
	function action_ingresoGasto(){
		if (isset($_POST['data'])){
			$datos = $_POST['data'];
			$fecha = date ( "Y-n-j" );
			$sql = "insert into librocuentas values(NULL,'".$datos['descripcion'];
			$sql .= "',". $datos['importe'] .",'" . $datos['tipoCuenta'] . "','" . $fecha . "')";
			$respuesta = $this->insert($sql);
			
			if ($respuesta>0) {
					//hemos añadido una operacion nueva en el Libro de Cuentas
					$mensaje= $datos['tipoCuenta'] . " aÃƒÆ’Ã‚Â±adido en el Libro de Cuentas";
					$this->pasa_vista("mensaje", $mensaje);
				}else{
					//ha fallado el salvado
					$mensaje= "Ha ocurrido un fallo al guardar el ".$datos['tipoCuenta']." en la BBDD";
					$this->pasa_vista("mensaje", $mensaje);
				}
		}
	}
}